home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / widgets.zip / WIDGET.H < prev    next >
C/C++ Source or Header  |  1992-07-22  |  3KB  |  106 lines

  1. //  WIDGET.H
  2. //
  3. //  David Stafford
  4. //
  5. //  11/25/91
  6.  
  7.  
  8. #ifndef __WIDGET_H
  9. #define __WIDGET_H
  10.  
  11. #ifdef CDIST
  12. #undef CDIST
  13. #define CDIST NEAR
  14. #endif
  15.  
  16. #ifdef DDIST
  17. #undef DDIST
  18. #define DDIST NEAR
  19. #endif
  20.  
  21. #ifndef LINKABLE
  22.   #define CDIST FAR
  23.   #define DDIST FAR
  24. #else
  25.   #ifndef CDIST
  26.     #define CDIST FAR
  27.   #endif
  28.  
  29.   #ifndef DDIST
  30.     #define DDIST FAR
  31.   #endif
  32.  
  33.   #define  GetWidgetExtra( Widget )         ((char *)(Widget) + sizeof(WIDGET))
  34.   #define  GetWidgetRect( Widget, Rec )     ((*(Rec)) = (Widget)->Rect)
  35.   #define  GetWidgetImage( Widget )         ((Widget)->Image)
  36.   #define  GetWidgetMask( Widget )          ((Widget)->Mask)
  37.   #define  GetWidgetSize( Widget )          ((Widget)->Size)
  38.   #define  GetWidgetPoint( Widget )         (*(POINT *)&((Widget)->Rect.left))
  39.   #define  IsWidgetVisible( Widget )        ((Widget)->Visible > 0)
  40. #endif
  41.  
  42. typedef struct tagWIDGET
  43.   {
  44.   HWND              Wnd;              // Window which "owns" the widget
  45.   POINT             Size;             // Width and height of the widget
  46.   RECT              Rect;             // Location within the window
  47.   HBITMAP           Image;            // The widget image
  48.   HBITMAP           Mask;             // (Optional) 1-plane AND mask
  49.   HBITMAP           Background;       // Behind the widget
  50.   int               Visible;          // Widget is visible if > 0
  51.   BOOL              Dirty;            // For repaint
  52.   struct tagWIDGET *Next;             // You guessed it
  53.   }
  54. WIDGET;
  55.  
  56. typedef WIDGET NEAR * HWIDGET;
  57.  
  58.  
  59. typedef struct
  60.   {
  61.   HDC     DC;
  62.   HWIDGET Widget;
  63.   int     Speed;
  64.   DWORD   StartTime;
  65.   int     Distance;
  66.   int     Count;
  67.   }
  68. ANIM_DATA;
  69.  
  70.  
  71. // Some handy general-purpose bitmap functions
  72.  
  73. HBITMAP      CDIST PASCAL CombineBitmaps( HBITMAP, HBITMAP , HBITMAP , DWORD  );
  74. void         CDIST PASCAL DrawBitmap( HDC, int, int, HBITMAP, HBITMAP);
  75.  
  76. // The widget-works
  77.  
  78. HWIDGET      CDIST PASCAL CreateWidget( HWND , HBITMAP, HBITMAP, int);
  79. void         CDIST PASCAL MoveWidget( HDC, HWIDGET, int, int);
  80. void         CDIST PASCAL AnimateWidget( HDC, HWIDGET, int, int, int , HANDLE);
  81. void         CDIST PASCAL DestroyWidget( HWIDGET);
  82. void         CDIST PASCAL HideWidget( HDC, HWIDGET);
  83. void         CDIST PASCAL AbsHideWidget( HDC, HWIDGET);
  84. void         CDIST PASCAL ShowWidget( HDC, HWIDGET);
  85. void         CDIST PASCAL AbsShowWidget( HDC, HWIDGET);
  86. void         CDIST PASCAL RepaintWidgets( HDC, HWND  );
  87. HWIDGET      CDIST PASCAL WidgetHitTest( HWND , int, int);
  88. void         CDIST PASCAL InvalidateWidgetsForPaint( HWND  );
  89. BOOL         CDIST PASCAL IsPointInWidget( HWIDGET, int, int);
  90. HWIDGET      CDIST PASCAL GetNextWidget( HWND , HWIDGET);
  91. int          CDIST PASCAL GetVersionNumber( void );
  92. void         CDIST PASCAL DestroyAllWidgetsForTheWindow( HWND  );
  93. int          CDIST PASCAL DistanceInPoints( int, int, int, int);
  94. BOOL         CDIST PASCAL IntersectWidgetRect( HWIDGET, RECT DDIST *, RECT DDIST *);
  95. BOOL         CDIST PASCAL WidgetsOverlap( HWIDGET, HWIDGET);
  96.  
  97. #ifndef LINKABLE
  98. void DDIST * CDIST PASCAL GetWidgetExtra( HWIDGET);
  99. void         CDIST PASCAL GetWidgetRect( HWIDGET, RECT DDIST *);
  100. POINT        CDIST PASCAL GetWidgetSize( HWIDGET);
  101. POINT        CDIST PASCAL GetWidgetPoint( HWIDGET);
  102. BOOL         CDIST PASCAL IsWidgetVisible( HWIDGET);
  103. #endif
  104.  
  105. #endif
  106.